POV-Ray : Newsgroups : povray.general : function question : Re: function question Server Time
6 Aug 2024 10:24:02 EDT (-0400)
  Re: function question  
From:
Date: 3 Apr 2002 17:12:44
Message: <jltmaukpci64s7497l1qdr79asqpl6tpln@4ax.com>
On Wed, 3 Apr 2002 15:38:09 -0600, "Shay" <sah### [at] simcopartscom> wrote:
> Thanks, guys. I'm going to have to time the workaround against a macro. I am
> thinking of building combination fractal / 3D knots so speed is a very
> important consideration.

// at first you have to code functions for each component of your vector
// sample operations attached

#local f_X = function ( float ) { float };
#local f_Y = function ( float ) { float/2 };
#local f_Z = function ( float ) { float/3 };

// then you have to bound possible results
// bounding can be pretty large but remember about accuracy problem

#local X_Min = -10000;
#local X_Max = 2560;
#local Y_Min = 1000;
#local Y_Max = 1280;
#local Z_Min = 1000;
#local Z_Max = 3300;

// then you have to calculate ranges of coordinates

#local X_Range = X_Max - X_Min;
#local Y_Range = Y_Max - Y_Min;
#local Z_Range = Z_Max - Z_Min;

// now create pigment inside ranges
// our float is supposed to be at x coordinate position

#local P = pigment{
  average
  pigment_map{
    [
      1
      function { ( f_X(x) - X_Min ) / X_Range }
      color_map { [0 red 3*X_Min] [ 1 red 3*(X_Range+X_Min) ] }
    ]
    [
      1
      function { ( f_Y(x) - Y_Min ) / Y_Range }
      color_map { [0 green 3*Y_Min] [ 1 green 3*(Y_Range+Y_Min) ] }
    ]
    [
      1
      function { ( f_Z(x) - Z_Min ) / Z_Range }
      color_map { [0 blue 3*Z_Min] [ 1 blue 3*(Z_Range+Z_Min) ] }
    ]
  }
};

// now convert pigment to function

#local F=function{pigment{P}};

// finally call function putting float at x position and putting anything
// (for example 0) at x and y position

#local V = F(300,0,0);

// remember result is 5D vector (color) so before use as 3D recconvert it

#include "strings.inc"
#warning VStr( <V.x,V.y,V.z> )

// ABX
// I hope I will be considered as the father of this method ;-)


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.